home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 15
/
Aminet 15 - Nov 1996.iso
/
Guides
/
PicsData
/
Rexx
/
PZ_MakePic_Color.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1995-07-05
|
3KB
|
179 lines
/*
** $VER: $Id: PZ_MakePic_Color.rexx,v 5.0 1993/11/12 01:14:23 chris Exp $
** Copyright (C) 1992, 1993 by Christian A. Weber, Zürich, Switzerland.
** REXX script internally used by PicZoo. Do not start manually.
**
** You may wish to change MAXMEM for ADPro if you don't have enough RAM,
** and the delay after loading if you have a slow HD :)
*/
options results
arg adprodir filename maxwidth maxheight maxdepth
address 'ADPro'
/*
** Make sure ADPro is running
*/
IF ~show(ports,'ADPro') THEN
DO
Address COMMAND 'C:Assign ADPRO: '||adprodir
Address COMMAND 'Run >NIL: ADPRO:ADPro MAXMEM=5000000 BEHIND'
Address COMMAND 'C:Wait 5'
IF ~show(ports,'ADPro') THEN EXIT
END
/*
** Screen types for ADPro
*/
LORES = 0
HIRES = 1
LACE = 2
PAL = 4
XOVERSCAN = 8
YOVERSCAN = 16
HIRESBIT = 0
LACEBIT = 1
/*
** Now load the picture ...
*/
SCREEN_TYPE LORES
LFORMAT 'UNIVERSAL'
LOAD filename
IF RC == 0 THEN DO
/*
** Get the picture size
*/
XSIZE
origwidth = ADPRO_RESULT
YSIZE
origheight = ADPRO_RESULT
/*
** Make a text string of the picture mode and size, and store it
** in an environment variable
*/
IMAGE_TYPE
type = WORD(ADPRO_RESULT,1)
if type = "GRAY" THEN DO
type = "G (" || origwidth || "x" || origheight || ")"
END
ELSE DO
type = "C (" || origwidth || "x" || origheight || ")"
END
Address COMMAND SetEnv PICZOO_IMAGETYPE type
/*
** If we have an interlaced lo-res or a non-interlaced hi-res
** picture, we must correct the aspect ratio accordingly.
** We do this by changing orgwidth or orgheight.
*/
SCREEN_TYPE
viewmode = ADPRO_RESULT
IF BITTST(viewmode, HIRESBIT) THEN DO
origwidth = origwidth / 2
Say 'Hi-Res.'
END
IF BITTST(viewmode, LACEBIT) THEN DO
origheight = origheight / 2
Say 'Interlaced.'
END
IF origwidth > origheight THEN DO
width = maxwidth
height = (origheight * maxwidth) / origwidth
END
ELSE DO
width = (origwidth * maxheight) / origheight
height = maxheight
END
/*
** Set the palette to match the PicZoo screen
*/
POFFSET 0
PTOTAL 16
PUSED 16
PPOKE 0 170 170 170
PPOKE 1 0 0 0
PPOKE 2 255 255 255
PPOKE 3 255 0 255
PPOKE 4 34 34 34
PPOKE 5 51 51 51
PPOKE 6 68 68 68
PPOKE 7 85 85 85
PPOKE 8 102 102 102
PPOKE 9 119 119 119
PPOKE 10 136 136 136
PPOKE 11 153 153 153
PPOKE 12 187 187 187
PPOKE 13 204 204 204
PPOKE 14 221 221 221
PPOKE 15 238 238 238
PSTATUS LOCKED
/*
** Now set the parameters for the screenmode depending on the
** picture's type (GRAY or COLOR).
** Gray pictures will have 16 gray levels, color pictures will
** be in HiRes-HAM6 (4096 colors).
*/
IMAGE_TYPE
IF WORD(ADPRO_RESULT,1) = "GRAY" THEN DO
RENDER_TYPE 16
END
ELSE DO
PTOTAL HAM
RENDER_TYPE HAM
END
/* RENDER_TYPE 2 */
/* PTOTAL 2 */
/*
** Make sure we get the best dynamic range
*/
OPERATOR DYNAMIC_RANGE 0 255
/*
** Now we scale the image to width/height
*/
ABS_SCALE width height
/*
** Render the image without any dithering
*/
DITHER 0 /* (1=Floyd-Steinberg) */
SCREEN_TYPE LORES
EXECUTE
/*
** Now save the image as a temp file, where PicZoo can get it.
*/
SFORMAT 'IFF'
SAVE 'T:__PicZooTmp.iff' 'IMAGE'
END
ELSE DO
/*
** LOAD returned an error
*/
say filename || ': not a picture'
END